Zjisteni datumu aplikace
Otázka od: Lahoda Radek
28. 4. 2004 8:35
zdravim,
jak zjistit datum kompilace aplikace?
Verzi uz vim jak, chci jeste to datum dat do about..
dekuji
Radek Lahoda
Odpovedá: Jiri Virt
28. 4. 2004 8:37
verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));
Jirka Virt
Odpovedá: Lahoda Radek
28. 4. 2004 9:03
pardon, v helpu jsem to prehlidl
DateTimeToStr(FileDateToDateTime(FileAge(FileName)));
----- Puvodni zprava -----
Od: "Lahoda Radek" <lahodar@uniplet.cz>
Komu: <delphi-l@clexpert.cz>
Odeslano: 28. dubna 2004 9:15
Predmet: Zjisteni datumu aplikace
> zdravim,
> jak zjistit datum kompilace aplikace?
> Verzi uz vim jak, chci jeste to datum dat do about..
> dekuji
>
> Radek Lahoda
>
>
>
>
>
>
Odpovedá: Lahoda Radek
28. 4. 2004 9:35
to z helpu taky funguje, ale vase je kratsi
to GetFileLastWriteTime je v cem?
----- Puvodni zprava -----
Od: "Jiri Virt" <virt@volny.cz>
Komu: <delphi-l@clexpert.cz>
Odeslano: 28. dubna 2004 9:19
Predmet: Re: Zjisteni datumu aplikace
> verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));
>
> Jirka Virt
>
>
>
Odpovedá: Dalibor Toman
28. 4. 2004 11:05
On Wednesday, April 28, 2004 9:53 AM [CET], Lahoda Radek
<lahodar@uniplet.cz> wrote:
> to z helpu taky funguje, ale vase je kratsi
> to GetFileLastWriteTime je v cem?
>
> ----- Puvodni zprava -----
> Od: "Jiri Virt" <virt@volny.cz>
> Komu: <delphi-l@clexpert.cz>
> Odeslano: 28. dubna 2004 9:19
> Predmet: Re: Zjisteni datumu aplikace
>
>
>> verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));
Upozorneni - FileAge ani GetFileLastWrite nevraci datum kompilace
aplikace - ale datum zapisu souboru na disk. Cili prostym
prekopirovanim (instalaci) souboru dojde kjeho zmene.
Datum kompilace by snad melo byt v PE hlavicce souboru (ale je otazka,
zda kompilatory vzdy tuhle polozku nastavuji - netestoval jsem)
D. Toman
Odpovedá: Jiri Virt
28. 4. 2004 11:21
to si myslim, ze dela obsahuje ftCreationTime
jinak k tomu chybelo
function GetFileLastWriteTime(const sFileName:string):TdateTime;
var
ffd:Twin32Finddata;
dft:dword;
lft:Tfiletime;
h:Thandle;
begin
result := 0;
h := windows.findfirstfile(Pchar(sFilename),ffd);
if INVALID_HANDLE_VALUE <> h then
begin
windows.FindClose(h);
filetimetolocalfiletime(ffd.ftLastWriteTime,lft);
filetimetodosdatetime(lft,longrec(dft).hi,longrec(dft).lo);
result := FileDateToDateTime(dft);
end;
end;
verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));
Jirka Virt
> Upozorneni - FileAge ani GetFileLastWrite nevraci datum kompilace
> aplikace - ale datum zapisu souboru na disk. Cili prostym
> prekopirovanim (instalaci) souboru dojde kjeho zmene.
>
> Datum kompilace by snad melo byt v PE hlavicce souboru (ale je otazka,
> zda kompilatory vzdy tuhle polozku nastavuji - netestoval jsem)
>
> D. Toman
>
>
>
>
>
Odpovedá: Dalibor Toman
28. 4. 2004 12:38
On Wednesday, April 28, 2004 10:50 AM [CET], Jiri Virt <virt@volny.cz>
wrote:
> to si myslim, ze dela obsahuje ftCreationTime
tezko.
Soubor ulozeny v NTFS (asi i v FAT32) ma nekolik polozek s casem ktere
se vztahuji k ruznym vecem:
- vytvoreni souboru (creation time) - coz obecne nema nic spolecneho s
casem kompilace (nepot po zkopirovani/instalaci kompilovaneho execka
se samozrejme vytvari novy soubor, ktery logicky muze dostat creation
data odlisne od compile time)
- posledni modifikace (last write time)
- posledni pristup (posledni cteni, posledni zapis - last access time)
pokud se nepletu.
D. Toman
Odpovedá: Jiri Virt
28. 4. 2004 13:06
nenasel sem nikde v MSDN co je co ...
ale kopirovanim se tyto casy nemeni .. meni se jen dalsi cas .. cas souboru
ftCreationTime structure that contains the time of file creation.
ftLastAccessTime structure that contains the time that the file was last
accessed.
ftLastWriteTime structure that contains the time of the last write
operation.
vic tam neni ...
zkousel sem, ale kopirovani se opravdu tyto casy nemeni ..
Jirka Virt
Odpovedá: Dalibor Toman
28. 4. 2004 15:09
On Wednesday, April 28, 2004 1:54 PM [CET], Jiri Virt <virt@volny.cz>
wrote:
> nenasel sem nikde v MSDN co je co ...
>
> ale kopirovanim se tyto casy nemeni .. meni se jen dalsi cas .. cas
> souboru
>
> ftCreationTime structure that contains the time of file creation.
> ftLastAccessTime structure that contains the time that the file was
> last accessed.
> ftLastWriteTime structure that contains the time of the last write
> operation.
>
> vic tam neni ...
>
> zkousel sem, ale kopirovani se opravdu tyto casy nemeni ..
samozrejme zalezi cim se kopiruje. Pokud kopirujici utilita precte
nastaveni casu ze stareho souboru a nastavi ho po kopirovani na novem
souboru pak se samozrejme naoko nic nezmeni.
pokud existuje datum kompilace tak je v PE hlavicce (nikoliv v
adresarove polozce). Cili je potreba prohlednout PE hlavicku (PE
Viewer od P. Vonese, knihovny z JEDI ci jak se to jmenuje atd)
Zdravi
D. Toman
Odpovedá: Ludek ZITA
28. 4. 2004 16:06
On Behalf Of Lahoda Radek
> jak zjistit datum kompilace aplikace?
> Verzi uz vim jak, chci jeste to datum dat do about..
> dekuji
Ahoj.
Napad : pridat si polozku do version info (prave tlacitko na hodnotami -
add key).
Mozna by na to slo napsat nejake udelatko do IDE, ktere by polozku
automaticky aktualizovalo.
Ludek
Odpovedá: Ondrej Kelle
28. 4. 2004 16:15
> jak zjistit datum kompilace aplikace?
> Verzi uz vim jak, chci jeste to datum dat do about..
Priamo v PE headri je na to vymedzene miesto, delphi ho vsak nevyplna.
Tu je IDE wizard, ktory ho tam po uspesnej kompilacii doplni:
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=19823
Najdes tam aj priklad, ako tu hodnotu potom precitat.
HTH
TOndrej
Odpovedá: ing. Jan Fiala
28. 4. 2004 18:23
28.4.2004 Dalibor Toman:
> samozrejme zalezi cim se kopiruje. Pokud kopirujici utilita precte
> nastaveni casu ze stareho souboru a nastavi ho po kopirovani na novem
> souboru pak se samozrejme naoko nic nezmeni.
Pokud to ovsem nekopirujes (neinstalujes) na jiny pocitac, aby ses v
About dozvedel datum a cas kompilace. A to bylo zrejem predmetem
dotazu
--
ing. Jan Fiala
mailto:jan.fiala@wo.cz
Prog-Soft s.r.o. Plzen
Informacni system pro vyrobce
a distributory napoju
Odpovedá: Lahoda Radek
4. 5. 2004 13:13
diky, koukam ze jsi autor, teda balicek se mi podarilo nainstalovat, ale
navod jak s tim pracovat tam neni, jakou metodu volat pro ulozeni/precteni?
"Ondrej Kelle" <o.kelle@digitalpublishing.de>
Odeslano: 28. dubna 2004 17:14
> > jak zjistit datum kompilace aplikace?
> > Verzi uz vim jak, chci jeste to datum dat do about..
>
> Priamo v PE headri je na to vymedzene miesto, delphi ho vsak nevyplna.
> Tu je IDE wizard, ktory ho tam po uspesnej kompilacii doplni:
> http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=19823
> Najdes tam aj priklad, ako tu hodnotu potom precitat.
>
> HTH
> TOndrej
>
Odpovedá: Ondrej Kelle
4. 5. 2004 13:46
> diky, koukam ze jsi autor, teda balicek se mi podarilo
> nainstalovat, ale navod jak s tim pracovat tam neni,
> jakou metodu volat pro ulozeni/precteni?
Ak to mas nainstalovane v IDE, pise to aktualny cas do PE hlavicky cieloveho
spustitelneho suboru automaticky po kazdej uspesnej kompilacii projektu v
IDE.
Hodnotu, ktora je v PE headri zapisana, to ukazuje v dialogu
Project\Information pod "Compile stamp".
Ak to chces robit z vlastneho programu, priklad najdes v tom zdrojaku: na
citanie funkcia LinkerTimeStamp, na zapis procedura UpdateLinkerTimeStamp.
HTH
TOndrej
Odpovedá: Lahoda Radek
4. 5. 2004 14:24
diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu ToolsApi
..
----- Puvodni zprava -----
Od: "Ondrej Kelle" <o.kelle@digitalpublishing.de>
Komu: <delphi-l@clexpert.cz>
Odeslano: 4. kvetna 2004 14:37
Predmet: Re: Zjisteni datumu aplikace
> > diky, koukam ze jsi autor, teda balicek se mi podarilo
> > nainstalovat, ale navod jak s tim pracovat tam neni,
> > jakou metodu volat pro ulozeni/precteni?
>
> Ak to mas nainstalovane v IDE, pise to aktualny cas do PE hlavicky
cieloveho
> spustitelneho suboru automaticky po kazdej uspesnej kompilacii projektu v
> IDE.
> Hodnotu, ktora je v PE headri zapisana, to ukazuje v dialogu
> Project\Information pod "Compile stamp".
>
> Ak to chces robit z vlastneho programu, priklad najdes v tom zdrojaku: na
> citanie funkcia LinkerTimeStamp, na zapis procedura UpdateLinkerTimeStamp.
>
> HTH
> TOndrej
>
>
>
Odpovedá: tondrej@t-online.de
4. 5. 2004 15:36
> diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu
> ToolsApi ..
To nemas pridat do projektu, ale nainstalovat do IDE v ramci design package.
V tom prispevku na CodeCentral je to myslim popisane.
HTH
TOndrej
Odpovedá: Ing. Ludek Florian
4. 5. 2004 15:34
Cauec,
pridej cestu k unite: Delphi\Source\ToolsApi (aspon u D5).
Bye Ludan
Subject: Re: Zjisteni datumu aplikace
> diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu
ToolsApi
>
> > > diky, koukam ze jsi autor, teda balicek se mi podarilo
> > > nainstalovat, ale navod jak s tim pracovat tam neni,
> > > jakou metodu volat pro ulozeni/precteni?
> >
> > Ak to mas nainstalovane v IDE, pise to aktualny cas do PE hlavicky
> cieloveho
> > spustitelneho suboru automaticky po kazdej uspesnej kompilacii projektu
v
> > IDE.
> > Hodnotu, ktora je v PE headri zapisana, to ukazuje v dialogu
> > Project\Information pod "Compile stamp".
> >
> > Ak to chces robit z vlastneho programu, priklad najdes v tom zdrojaku:
na
> > citanie funkcia LinkerTimeStamp, na zapis procedura
UpdateLinkerTimeStamp.
> >
> > HTH
> > TOndrej
> >
> >
> >
>
>
>
Odpovedá: Ondrej Kelle
4. 5. 2004 15:46
> pridej cestu k unite: Delphi\Source\ToolsApi (aspon u D5).
Od D6 to uz neplati, designtime kod musi byt oddeleny od runtime:
http://community.borland.com/article/0,1410,27717,00.html
HTH
TOndrej
Odpovedá: Lahoda Radek
5. 5. 2004 8:22
nainstalovane v IDE to mam, ale ptal jsem se, jakou metodou to pak precist v
programu [v about], rikals LinkerTimeStamp, tak jsem ji ykousel volat, ale
program ji neynal, no a po pridani pas do projektu yas neynal to api, tak
jsem to y toho pas vzmayal, trochu upravil a kupodivu to funguje
----- Puvodni zprava -----
Od: <tondrej@t-online.de>
Komu: <delphi-l@clexpert.cz>
Odeslano: 4. kvetna 2004 15:43
Predmet: Re: Zjisteni datumu aplikace
> > diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu
> > ToolsApi ..
>
> To nemas pridat do projektu, ale nainstalovat do IDE v ramci design
package.
> V tom prispevku na CodeCentral je to myslim popisane.
>
> HTH
> TOndrej
>
>
>
>
Odpovedá: tondrej@t-online.de
5. 5. 2004 9:10
> nainstalovane v IDE to mam, ale ptal jsem se, jakou metodou to pak
> precist v programu [v about], rikals LinkerTimeStamp, tak jsem ji
> ykousel volat, ale program ji neynal, no a po pridani pas do projektu
> yas neynal to api, tak jsem to y toho pas vzmayal, trochu upravil a
> kupodivu to funguje
Da sa to spravit aj tak, ale nebolo by jednoduchsie si tu funkciu skopirovat
niekam do svojej unity?
Obavam sa, ze tie upravy, ktore si urobil, aby si mohol skompilovat ten
zdrojak v svojom projekte, sposobia, ze sa Ti nabuduce nepodari prekompilovat
tu design package.
HTH
TOndrej